package central;
import gnu.io.SerialPortEvent;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;

import Conexion.ComunicacionArduino;
import GUI.Ventana;
import control_monitor.Monitor;


public class pieza_A implements Runnable{

	private Monitor monitor; 
	ComunicacionArduino robot1, robot2, robot3;
	Ventana gui;
	
	public pieza_A(Monitor monit,ComunicacionArduino _robot1, ComunicacionArduino _robot2, 
			ComunicacionArduino _robot3, Ventana _gui){
		monitor=monit;
		robot1 = _robot1;
	    robot2 = _robot2;
		robot3 = _robot3;
		gui = _gui;
	}
	
	private void esperar(ComunicacionArduino robot)
	{
		boolean respuesta = false;
		while(!respuesta)
		{
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			SerialPortEvent s = new SerialPortEvent(robot.puerto(), 1, false, true); 
			
			if(robot.serialEvent2(s).equals("fin"))
			{
				respuesta = true;
			}		
		}
		
	}
	
	public void run(){	
			
		
			//Llega pieza A.
			monitor.ejecutar_transicioninicial(1);	
			gui.setnumI(1, 1);
		
			
			
			monitor.ejecutar_transicioninicial(4);
			//ARDUINO R1 va al I1	
			robot1.sendMessage("I");
			//R1 toma de I1
			gui.SetRobot(1, 4);
			gui.setnumI(1, -1);
			esperar(robot1);
			
			
			
			monitor.ejecutar_transicion(5);
			//ARDUINO R1 va a M1
			robot1.sendMessage("1");
			//R1 deja en M1
			gui.SetRobot(1, 5);
			gui.setMaquina(1, 1, 1);
			esperar(robot1);
			
		
			monitor.ejecutar_transicion(7);
			//ARDUINO R2 va a M1
			robot2.sendMessage("1");
			//R2 toma de M1
			gui.SetRobot(2, 3);
			gui.setMaquina(1, -1, 1);
			esperar(robot2);
			

			
			
			monitor.ejecutar_transicion(9);	
			//ARDUINO R2 va a M2
			robot2.sendMessage("2");
			//R2 deja en M2
			gui.SetRobot(2, 5);
			gui.setMaquina(2, 1, 1);
			esperar(robot2);
			

			
			monitor.ejecutar_transicion(11);
			//ARDUINO R3 va a M2
			robot3.sendMessage("2");
			//R3 saca de M2
			gui.SetRobot(3, 3);
			gui.setMaquina(2, -1, 1);
			esperar(robot3);
			
			
			
			//ARDUINO R3 va  O
			robot3.sendMessage("O");
			//R3 deja en O1
			gui.SetRobot(3, 0);
			gui.setnumO(1, 1);
			esperar(robot3);
			monitor.ejecutar_transicion(13);			
			

	
			System.out.println("ya termino el camino A");
	}
}
